<?php

/**
 * ord_compra actions.
 *
 * @package    SAC_CLonsa
 * @subpackage ord_compra
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class ord_compraActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $peticion)
  {
      $this->forward('ord_compra', 'proveedores');
  }

  public function executeProveedores(sfWebRequest $peticion)
  {
      $this->proveedores_licitados = ProveedorPeer::getProveedoresLicitadosConSolicitudesEnEstado(11);
  }
  
  public function executeSolicitudes(sfWebRequest $peticion)
  {
      if( !$peticion->isMethod('post') && !is_null($peticion->getParameter('id')) )
      {
          $proveedor = ProveedorPeer::getProveedorPorId( $peticion->getParameter('id') );
          if( !is_null($proveedor) )
          {
              /* Ete parámetro */
              //$peticion->setParameter('ir_a_crear',true);
              $this->proveedor = $proveedor;
              $solicitudes = ItemOsPeer::
                  getItemsPorProveedorLicitadoYEstadoSolicitudId( $peticion->getParameter('id'), 11 );// Id Estado = 10. Para solicitudes Licitadas
              $this->solicitudes = $solicitudes;
          }
          else
          {
              /*Código necesario para informar al usuario que el Id del Proveedor enviado no existe*/
              $this->redirect('ord_compra/proveedores');
          }
      }
      elseif ($peticion->isMethod('post') )
      {
          /*Código necesario para informar que el parámetro Id no ha sido enviado*/
          $peticion->setParameter('idProveedor', $peticion->getParameter('id'));
          $this->forward('ord_compra', 'crear');
      }
      else
      {
          $this->redirect('ord_compra/proveedores');
      }
  }
  
  public function executeCrear(sfWebRequest $peticion)
  {
    //$this->forward('ord_compra', 'lista');
      $idProveedor = $peticion->getParameter('idProveedor');
      $proveedor = ProveedorPeer::getProveedorPorId( $idProveedor );
      
      if( $peticion->isMethod( 'post' ) && !is_null( $proveedor ) && ($peticion->getParameter('guardar') !='true') && ($peticion->getParameter('confirmar') !='true' ) )
      {
          $this->proveedor = $proveedor;
          if ( !is_array($peticion->getParameter('sel_solicitudes_elegidas')) )
          {
              $this->redirect('ord_compra/index');
          }
          $idSolicitudes = $peticion->getParameter('sel_solicitudes_elegidas');

          foreach( $idSolicitudes as $id )
          {
              $HashSolicitudes[$id] = ItemOSPeer::getItemOrdenServicioPorId($id);
              $HashCotizacionSolicitud[$id] = SolicitudCotizadaPeer::getSolicitudCotizadaPorItemOsId( $idProveedor, $id );
          }
          $this->idSolicitudes = $idSolicitudes;
          $this->HashSolicitudes = $HashSolicitudes;
          $this->HashCotizacionSolicitud = $HashCotizacionSolicitud;
      }
      elseif( $peticion->isMethod( 'post' ) && ($peticion->getParameter('guardar') =='true' ) )
      {
          $this->forward('ord_compra','confirmar');
      }
      elseif( $peticion->isMethod( 'post' ) && ($peticion->getParameter('confirmar') =='true' ) )
      {
          $this->forward('ord_compra','confirmar');
      }
      else
      {
          $this->redirect('ord_compra/proveedores');
      }
  }

  public function executeConfirmar(sfWebRequest $peticion)
  {
      if( $peticion->isMethod( 'post' ) && ( $peticion->getParameter( 'confirmar' ) != 'true' ) )
      {
          $this->confirmacion = false;
          $proveedor = ProveedorPeer::getProveedorPorId( $peticion->getParameter('id_proveedor') );
          $ids_solicitudes = $peticion->getParameter('ids_solicitudes');
          $this->ids_solicitudes = $ids_solicitudes;
          $this->proveedor = $proveedor;
          $forma_cotizacion = $peticion->getParameter('forma_cotizacion');
          $nombre_contacto = $peticion->getParameter('nombre_contacto');
          $telefono_contacto1 = $peticion->getParameter('telefono_contacto_1');
          $telefono_contacto2 = $peticion->getParameter('telefono_contacto_2');
          $direccion_contacto = $peticion->getParameter('direccion_contacto');
          $forma_pago = $peticion->getParameter('forma_pago');

          $valores_cotizados = $peticion->getParameter('valor_cotizado');
          $formas_entrega = $peticion->getParameter('forma_entrega');
          $observaciones = $peticion->getParameter('observaciones');
          $this->formas_entrega = $formas_entrega;
          $this->observaciones = $observaciones;

          $cont = 1;
          foreach( $valores_cotizados as $valor_cotizado )
          {
              $cont++;
          }

          $this->cont_interno = $cont;

          $this->forma_cotizacion = $forma_cotizacion;
          $this->nombre_contacto = $nombre_contacto;
          $this->telefono_contacto1 = $telefono_contacto1;
          $this->telefono_contacto2 = $telefono_contacto2;
          $this->direccion_contacto = $direccion_contacto;
          $this->valores_cotizados = $valores_cotizados;
          $this->forma_pago = $forma_pago;
      }
      elseif ( $peticion->isMethod( 'post' ) && ( $peticion->getParameter( 'confirmar' ) == 'true' ) )
      {
          $this->confirmacion = true;

          $orden_compra = new OrdenCompra();
          $orden_compra->setFechaCreacion( time() );
          $orden_compra->setsfGuardUser( $this->getUser()->getGuardUser() );
          $orden_compra->setEstadoOrdenCompraId(1);
          $orden_compra->setContactoId(1);
          $orden_compra->setFormaCotizacion( $peticion->getParameter('formaCotizacion') );
          $orden_compra->setFormaPago( $forma_pago = $peticion->getParameter('formaPago') );
          $orden_compra->setDireccion( $peticion->getParameter('direccionContacto') );
          $orden_compra->setTelefono1( $peticion->getParameter('telefonoContacto1') );
          $orden_compra->setTelefono2( $peticion->getParameter('telefonoContacto2') );

          $proveedor = ProveedorPeer::getProveedorPorId( $peticion->getParameter('idProveedor') );
          $ids_solicitudes = $peticion->getParameter('idsSolicitudes');
//          $this->ids_solicitudes = $ids_solicitudes;
          

          $forma_cotizacion = $peticion->getParameter('formaCotizacion');
          $nombre_contacto = $peticion->getParameter('nombreContacto');
          $telefono_contacto1 = $peticion->getParameter('telefonoContacto1');
          $telefono_contacto2 = $peticion->getParameter('telefonoContacto2');
          $direccion_contacto = $peticion->getParameter('direccionContacto');
          $forma_pago = $peticion->getParameter('formaPago');

          $valores_cotizados = $peticion->getParameter('valorCotizado');
          $formas_entrega = $peticion->getParameter('formaEntrega');
          $observaciones = $peticion->getParameter('observaciones');          

          $cont = 0;
          foreach( $valores_cotizados as $valor_cotizado )
          {
              $solicitud_orden_compra = new SolicitudOrdenCompra();
              $solicitud_orden_compra->setOrdenCompra($orden_compra);
              $item_orden_servicio = ItemOsPeer::getItemOrdenServicioPorId( $ids_solicitudes[$cont] );

              /* Para averiguar si dicha solicitud ya ha sido agregada en una orden de compra */
              /* De ser así redirecciona a la lista de proveedores para crear una orden de compra */
//              if($item_orden_servicio->getEstadoSolicitudId() != 11 ){
//                  $this->redirect('ord_compra/proveedores');
//              }
              $item_orden_servicio->setEstadoSolicitudId( 12 );// Estado solicitud en compra
              $item_orden_servicio->save();

              $SolicitudCotizadaCorrespondiente = SolicitudCotizadaPeer::getSolicitudCotizadaPorItemOsId( $proveedor->getId(), $ids_solicitudes[$cont] );
              $solicitud_orden_compra->setSolicitudCotizada( $SolicitudCotizadaCorrespondiente );
              $solicitud_orden_compra->setFormaEntrega( $formas_entrega[$cont] );
              $solicitud_orden_compra->setObservacion( $observaciones[$cont] );
              $solicitud_orden_compra->save();
              $cont++;
          }

          $orden_compra->save();

          $this->proveedor = $proveedor;
          $this->num_orden_compra = $orden_compra->getId() ;
//          $this->cont_interno = $cont;
//          $this->formas_entrega = $formas_entrega;
//          $this->observaciones = $observaciones;
//          $this->forma_cotizacion = $forma_cotizacion;
//          $this->nombre_contacto = $nombre_contacto;
//          $this->telefono_contacto1 = $telefono_contacto1;
//          $this->telefono_contacto2 = $telefono_contacto2;
//          $this->direccion_contacto = $direccion_contacto;
//          $this->valores_cotizados = $valores_cotizados;
//          $this->forma_pago = $forma_pago;
      }
      else
      {
          $this->redirect('ord_compra/proveedores');
      }
  }

}